TractoFlow singularity def file

Hello,

I want to use TractoFlow in arm64, but I can’t find a singularity def file that does not use the Docker amd64 image as base. I am quite new to containers, but I was wondering if adapting this Dockerfile (https://github.com/scilus/containers-scilus/blob/main/containers/scilus-flows.Dockerfile) to a singularity def file and eliminating the instructions for the tools other than TractoFlow would serve my purpose.

Thank you in advance!

Beatriz

Hi @beatrizcepa,

sadly, the Dockerfile you reference bases itself on a amd64 built image (scilus), so you’ll end up with a amd64 container either way. As of now, images distributed by scilus are amd64 only. We tried porting them to arm64, but we have dependencies that refrain us from doing so. However, there is no problem running amd64 images on arm64, since they are somehow compatible. Docker uses QEMU natively to ensure that compatibility. There will be some performance decrease in comparison to a pure arm64 image, but it should not be much.

As for singularity, there is a way to build it against QEMU and create arm64 ready images from amd64 docker. I have not tried it yet though. It should also be possible to use docker to generate a arm64 transcript from an amd64 image, using QEMU, and then build a singularity from it for arm64.

There is a few ways to go from here. It depends on your experience mostly. The easiest route would be using Docker and this image, since you have compatibility without having anything to do.

On our end, we’ll get back on arm64 shortly. A lot has moved since we last tried. I can’t say creating a pure arm64 image will be possible, it’ll depend if our dependencies have ported to it or are compatible with it. The task is also a real time sink and it could take a while before we have an official image available for you.

Let’s update each others here, if you end up trying anything !

1 Like