Skip to content

Tensor contraction of Aij x B ijkl -> C kl not working #944

@LaurinL0801

Description

@LaurinL0801

I want to contract to tensors $A_{ij}$ and $B_{ijkl}$ to tensor $C_{kl}$, like

$$ A_{ij} \otimes B_{ijkl} \rightarrow C_{kl}. $$

However, this did not work and gave a segmentation fault.

I am using the C interface and am trying to write haskell bindings. The error can also be reproduced in a refactored version of C++ example 5.

Compiled with OpenMPI v5.0.6 and G++ v14.3.0

 sorting contraction indices
 compatibility of (1|2): Not compatible
 compatibility of (34|21): Transposed
 No redistribution of (34|21)
 Redistribution of (1|2) compatible with (34|21)
==== backtrace (tid:1457695) ====
 0 0x00000000000419c0 __GI___sigaction()  ???:0
 1 0x00000000002f8c0e __dbcsr_tensor_reshape_MOD_dbcsr_t_reshape()  ???:0
 2 0x00000000002bed3b __dbcsr_tensor_MOD_dbcsr_t_copy_expert()  ???:0
 3 0x00000000002c3a6a __dbcsr_tensor_MOD_dbcsr_t_remap.constprop.0()  ???:0
 4 0x00000000002d6c24 __dbcsr_tensor_MOD_reshape_mm_compatible.constprop.0()  ???:0
 5 0x00000000002e1431 __dbcsr_tensor_MOD_dbcsr_t_contract_expert.constprop.0()  ???:0
 6 0x00000000002e8106 __dbcsr_tensor_MOD_dbcsr_t_contract()  ???:0
 7 0x000000000004ef25 c_dbcsr_t_contract_r_dp()  ???:0
 8 0x0000000000403fc0 main()  ???:0
 9 0x000000000002a4d8 __libc_start_call_main()  ???:0
10 0x000000000002a59b __libc_start_main_alias_2()  ???:0
11 0x00000000004044a5 _start()  ???:0
=================================
[1]    1457695 segmentation fault (core dumped)  ./result/bin/dbcsr_tensor_example_test

Is this wanted behavior for Tensor 2 contracted with Tensor 4 -> Tensor 2, or should this work?

If, it should work, how would that be?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions