Improved synchronization

The code doesn't implement any really improved synchronization technique.  Consider documenting and implementing Greg's A/B approach.

This issue has increased in importance as it prevents cool concepts such as bidirectional camera settings via NT from working acceptably in practice (without undesirable side effects).


Replace privileged_tests build tag with environment variable

WIP, see commit messages for now.
Replace `privileged_tests` build tag with environment variable

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test-runtime

/test

/test

/test

/test

/test

/test

/test

/test

/test-1.23-5.4

@ti-mo could you do a scan through the files changed here and double-check that the copyright notices are on the files? I found one instance pkg/testutils/privileged.go where the file was missing the standard SPDX/etc preamble.

@ti-mo @joestringer go-header, part of the golangci-lint suite can be used for this purpose. The main caveat for using in this repo is that I'm not sure we can make it work with multiple license headers.

@ti-mo @joestringer go-header, part of the golangci-lint suite can be used for this purpose. The main caveat for using in this repo is that I'm not sure we can make it work with multiple license headers.

Cool, this is relatively easy to implement ourselves, though.

I thought we had a linter for this, but evidently not. It's possible that the FOSSA scanner work will introduce one, but it should be easy enough to add one ourselves anyway.


WASM - Faster Native Uint8List

I'm working on some improvements to the Flutter engine. The browser has an API that takes a clamped array and creates image data from the array:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8ClampedArray
https://developer.mozilla.org/en-US/docs/Web/API/ImageData
This pull request uses this API to reduce heap usage in CanvasKit and SkWasm:
https://github.com/flutter/engine/pull/54486
While this works pretty well in Dart2JS because the clamped array can come straight from .toJS, in WASM there is a lot of copying, which makes trying to load 4k image data unreasonably slow. It's possible to create a native array first, and then use toDart to get an array that doesn't need to be copied, but that would require knowledge of the platform you are running on in order to create the appropriate type of array.
Ideally this could be done with zero copies all of the time, but i think there would need to be something like Uint8List or a Uint8List.native / Uint8ClampedList.native constructor so there is some way to ensure that we don't get an array that is going to be copied back and forth every time we use .toJS.
While ideally there would be a way to avoid the copies entirely, copying and initializing very large lists seems unreasonably slow with .toJS, there must be a lot of room for improvement.

While ideally there would be a way to avoid the copies entirely, copying and initializing very large lists seems unreasonably slow with .toJS, there must be a lot of room for improvement.

Mixed mode code is currently slow due to crossing the WasmGC<->JS boundary (e.g. having a loop over WasmGC arrays that load each byte and stores into a JS typed data array). There are upcoming changes in V8/Chrome that will improve this.

This pull request uses this API to reduce heap usage in CanvasKit and SkWasm:
https://github.com/flutter/engine/pull/54486

This is modifying flutter engine code which knows it runs in the browser. It also knows it wants JS typed arrays.
Why not let the code allocated JS typed arrays and passes them around?
Then there should be no copies in <jsArray>.toDart and no copies when going to JS again via <jsArray>.toDart.toJS.

@mkustermann the issue is that the API itself exposes a Uint8List as the parameter, and there isn't a simple way to request the right type of Uint8List be created from the callers perspective.
  @override
  void decodeImageFromPixels(Uint8List pixels, int width, int height,
          ui.PixelFormat format, ui.ImageDecoderCallback callback,
          {int? rowBytes,
          int? targetWidth,
          int? targetHeight,
          bool allowUpscaling = true}) {

https://api.flutter.dev/flutter/dart-ui/decodeImageFromPixels.html
I did suggest that maybe changing the API so that the API itself was responsible for the allocation of an ImageData structure or something would be a better way to ensure the right kind of list is created, but that would be a breaking API change. It would be more desirable, I think, if we could guarantee the fast path, or at least make it easier for users to go down the right path.  Right now every caller would have to have some kind of conditional import just to create the right kind of list to pass in. If the API could warn the user if they passed in the wrong kind of list and activates a slow path and if the user had a way to request the right kind be created without using conditional imports and understanding internals of js_interop, that would be nice.

@mkustermann the issue is that the API itself exposes a Uint8List as the parameter, and there isn't a simple way to request the right type of Uint8List be created from the callers perspective.

Yes, it seems that this is an unfortunate API choice. It may be that

on the VM it would prefer to have malloc()ed data and wants to require a Pointer<Uint8>
on the web it would prefer to have JS typed arrays and therefore require a JSUint8Array

=> We have those types and flutter APIs could require them.
To facilitate platform-independent APIs one could make a
// Which platform-independent code can pass around (e.g. in package:typed_data or dart:typed_data)
abstract class NativeBuffer {
  Uint8List get bytesView;
}

// Code that creates web buffers or consumes them uses (e.g. in package:web or dart:js_interop)
class JSNativeBuffer extends NativeBuffer {
  final JSUin8Array jsArray;

  JSNativeBuffer(this.jsArray);

  factory JSNativeBuffer.create(int length) => JSNativeBuffer(JSUint8Array.withLength(length));

  Uint8List get bytesView => array.toDart;
}

// Code that creates malloc'ed  buffers or consumes them uses (e.g. in package:ffi or dart:ffi)
class PointerNativeBuffer extends NativeBuffer {
  final Pointer<Uint8> pointer;
  final int length;

  PointerNativeBuffer(this.pointer, this.length);

  factory PointerNativeBuffer.create(int length) => PointerNativeBuffer(malloc(length), length); // <-- TODO: attach finalizer

  Uint8List get bytesView => array.asTypedList(length);
}

=> It would make a lot of code platform-independent if it only passes NativeBuffers around.
=> Code that creates them would still be platform-specific (and may do so via conditional imports)
=> Code that consumes them would still be platform-specific (and may do so via conditional imports)
=> Code can test for specific subtypes pixels is JSNativeBuffer (**)
Though for the particular API in question here - decodeImageFromPixels: It would probably have a parameter of type NativeBuffer and therefore wouldn't be guaranteed to always get a JSNativeBuffer on the web (e.g. if we added support for FFI to the web, users could pass both PointerNativeBuffer as well as JSNativeBuffer). But it could document that on web it has to be one and on VM another and assert() in the VM-specific and web-specific flutter engine.
(**) We currently don't have APIs that allows one to test whether a Uint8List is backed by JS typed array or FFI Pointer.
I'm not sure if we should have a NativeBuffer.create(int length) that magically constructs JS typed data on web and malloc'ed typed data on the VM - e.g. due to the above issue where web may actually support FFI at some point at which point this becomes ambiguous.
/cc @eyebrowsoffire is that something flutter team would want?
/cc @lrhn

Just to side-track ...
If you want performance, never have a function both do computation and allocate a buffer for the result. Don't have allocation as a side-effect.
Instead pass the buffer in from the caller's side, or maybe a buffer factory function (which may be backed by a buffer pool, to not always do allocation).
Always know who currently owns a buffer, don't let a function reuse a buffer that it was given earlier, always give it the buffer it needs for the current computation.
If the computation has a size that cannot be predicted ahead of doing it, provide a way to ask for chunks of results.
The C stdlib read function is a fine example: Takes a buffer (pointer + length) and returns how much of it was filled. Can be called again to get more data. Caller owns the buffer before calling and after return.
Obviously we didn't follow that advice when writing the platform libraries. Something like utf8.encode allocates. Even when used for chunked conversion, it allocates new buffers all the time, with not way to say that a buffer is free to be reused, and no way to abstract over the allocation (can't pass in a buffer pool or something). Sorry.
Other than that, is the issue here just that Wasm is inefficient in interop'ing between Dart typed-data and JS typed-data arrays? (Compiling to JS and using a Uint8List directly sounds fine, it's just a JS Uint8Array. Compiling to native and using a Uint8List directly is also fine. It's Wasm (on web) that has both available, and need to convert between them? (Does it?)
Could there be a way on Wasm to ask for Uint8List to be backed by one or the other? (Probably hard, since that API would make no sense on any other platform. Could be in a dart:wasm library, which provides Wasm specific helpers for interoperating between Wasm native code and JS code, and which is not the same as js_interop?)
Introducing a NativeBuffer class which is not a ByteBuffer (except that it is exactly the same for anything but Wasm) seems like a weird abstraction that you won't know to use unless you have already hit the problem on Wasm.
Just like as Int64, you wouldn't ever start using it unless you already hit a problem with numbers on the web. (And you don't actually want it for much of anything, except storing 64-bit IDs. The number operations are spurious.)
If we introduce a NativeBuffer, when should you use it?
Should you always use it instad of a ByteBuffer?
If so, why isn't it the implementation of ByteBuffer to begin with?
If not, what is the migration path, if I start out using normal typed data, and decide that I want native typed data intead?
As written above, if I have a NativeBuffer and do .bytesView.buffer, I have a ByteBuffer that should be backed by the same native bytes. Then we're back at using normal typed-data types with that external buffer, and I'd expect those operations to be as efficient as possible. That'll be your job, @mkustermann :wink:.
At that point, why does the NativeBuffer type exist at all? Could We just have external factory ByteBuffer.native(int size); which provides a ByteBuffer backed by "native" data which is guaranteed to be as efficient as possible as a typed-data ByteBuffer and efficiently communicated to "native" code through js_interop/ffi as appropriate?

@mkustermann but can NativeBuffer be used in dart2js? Part of the complication here is that dart2js and dart2wasm have a massive performance gap, with the WASM version just being insanely slow.
Uint8List original = Uint8List(4000 * 4000 * 4);
final copy = original.toJS;

The second line here takes over 900ms my nice Macbook Pro when executing with flutter run --wasm, but nanoseconds with dart2js. It also takes nanoseconds if the Uint8List is created from calling toDart on a JS rather than using any of the constructors on the Uint8List. Two things bother me here:

Doesn't 900ms to do a mem copy typed array data seem like an insanely long time? A zero copy path would definitely be desirable, but it seems like the copy shouldn't take 900ms either way.
If we can get the fast path if the list is created appropriately, could there just be a way to create it appropriately in a platform neutral way and to assert that it was created as such? On non WASM platforms, it could just return the normal list, on WASM it could return one backed by native memory.

My concern here is that it's really easy to build footguns with large Uint8List arrays that tank WASM performance and make WASM way slower than the JS code. Is it being so easy to create these performance problems desirable? The docs do talk about the dual nature of the way toJS/toDart work here, but it seems like it's asking for trouble and there are going to be a lot of downstream performance problems any time someone needs to deal with large amounts of typed data in a WASM build. Most people aren't testing their packages with dart2wasm at the moment, and will be a bit shocked to find such massive performance gaps when trying to interface with js_interop without an easy way to write code that performs equally well with js and WASM builds.
Is there a reason Uint8List can't perform equally well and avoid the copies by default or by request?

This issue is an ongoing one that has been discussed at length and we still don't really have a solution to. The core issue is that the Dart classes ByteData, ByteBuffer and all the subclasses of TypedDataList (including Uint8LIst for example) basically are designed around two assumptions:

Random access to its elements is very fast
It can be passed to host APIs
With the VM and/or AOT compilation, these feel like very safe assumptions. These objects are backed by a continuous block of memory, so random access is very fast and host APIs can simply take a pointer to that block of memory (or some subview of it). However, for Wasm/WasmGC, there is no single construct that both of these can lower to that fulfills both of these assumptions. In JS backends, these are always backed by their JS counterparts (DataView, ArrayBuffer or ByteBuffer). In Wasm though, random access to these is extremely slow, since it requires calling out to JS from Wasm for every single access, and those calls cannot be inlined or optimized by the JS VM. On the other hand, we can use WasmGC arrays, which are actually extremely fast, but do not interop with host APIs at all. (There is also a secondary issue of WasmGC arrays being non-reinterpretable, so you can't allocate a u8 WasmGC array and reinterpret it as u32, which the ByteBuffer APIs allow you to do).

As a result, we end up with some serious semantic mismatches between these Dart classes and our options for what to lower them to. In the fullness of time, I think we will need a more comprehensive solution in the Wasm spec. We currently don't even have an efficient way to copy data between WasmGC arrays and JS ArrayBuffer/TypedData/DataView objects.

@eyebrowsoffire if there is no efficient way to copy the WASM array, that does present a bit of a problem with jank. If we can't get out a pixel buffer in less than 900ms from toJS, then toJS isn't really ever a good option inside WASM for large amounts of data. Even on a small image we might drop frames just from the toJS call for the slow path. The API has an async callback, so the work could be chunked to prevent jank if it was the slow type of Uint8List incoming, but that would be super slow in the case that the source of the buffer was actually a JS API and we had the type of list in our hand that allowed us to avoid the copy.
I think either way to ensure no jank automatically or warn users when what they are doing will cause jank we'd need a way to check what kind of list. Maybe something like a Uint8List.toJSWillCopy extension method in js_interop? That punts a bit on the fast copy path until we have one, but at least it allows the engine to ensure we don't hang the browser process on a toJS call.

With the VM and/or AOT compilation, these feel like very safe assumptions.

This is not quite correct: The VM decides where to allocate buffers for typed data for a new Uint8List(...) call. Those cannot always be passed to a C function which wants a uint8_t* pointer. We have some special cases that make this somewhat work: a) make a ffi leaf call b) call special C code and pass the object as a VM handle and make the C code use Dart VM embedder API calls to acquire a range of bytes: BUT a) both of these should only be used if the call is very fast b) none of them can be used if one triggers object allocations, invokes dart code, etc.
=> So from a principled standpoint: This issue exists on the VM just as it exists on JS.
=> The VM would benefit as well from letting users choose a "host-compatible" array implementation that can be passed with zero-cost to C.

In Wasm though, random access to these is extremely slow, since it requires calling out to JS from Wasm for every single access, and those calls cannot be inlined or optimized by the JS VM

Those accesses can be inlined and optimized by the JS VM, it just hasn't been done yet (or rather optimizations - at least in V8 - have been implemented, but they haven't been enabled by-default yet). JS/WasmGC engines will eventually make accesses to JS typed data as well as JS strings fast. At that point we may decide to make dart2wasm use JS typed data just like dart2js (but I'm not fully convinced we should do that)

It can be passed to host APIs

I think it's more fair to say that JavaScript has designed their typed data APIs to be interoparable with host, they have moved the backing store to malloced memory, given them the ability to transfer/detach the backing buffers, ... - they made these trade-offs at the cost of slower allocation and slower byte access. (Dart2js just happens to use them because it cannot implement typed data efficiently in any other way.)
I wouldn't say the typed data APIs have been designed with the purpose of passing them cost-free to host APIs: For example using async I/O via dart:io will also copy the buffers across the boundary in some situations - precisely because the typed data objects do not generally have the capability of being usable from host API side at zero-cost.
These two use cases are different and have different trade-offs:

use typed data within dart (fast to allocate, fast access, need to copy across boundary) (VM & dart2wasm's choice)
use typed data by talking to host environment / other languages (slow to allocate, slightly slower to access, zero cost across boundary) (dart2js choice) - of which there could be multiple (e.g. JS browser APIs or C code running in linear memory wasm)

Ideally we'd have different types to make it very clear on the type system level that one requires one or the other.
But at a bare minimum it should be possible for developers to choose the right one to allocate and then get the right behavior. Possibly also the ability to test for them.
How useful would it be for flutter to be able to test whether a Uint8Array is a JS typed array or not?

If we can't get out a pixel buffer in less than 900ms from toJS, then toJS isn't really ever a good option inside WASM for large amounts of data.

It may be not clear from the name, but without having a guarantee (e.g. due to knowing how it was allocated) one should assume that .toJS is a copying operation (e.g. not just typed data, also for dart lists and other data structures).
We're going to have a look at exactly what code gets generated for this copying and see if we can make this faster. But generally a) can image data be always allocated with host interop capability (i.e. in JS land)  b) do we really need to copy these buffers around (seems not very performant, even if the memory copy is fast)?

How useful would it be for flutter to be able to test whether a Uint8Array is a JS typed array or not?

I think in this case it would be very useful, as it would open up either the option of asserting when the slow path is being hit or having a dual path in the encoder to prevent jank.

a) can image data be always allocated with host interop capability (i.e. in JS land)

In a lot of cases the image data does come from JS land to begin with, for instance a PDF viewer would likely use pdf.js or pdfium as the source for the pixel data in which case it would likely receive a pixel buffer from js_interop as a js array. There are definitely also cases where dart itself could be used to construct raw pixel buffers, such as a dart native image editor. If a user could request the array be allocated with host interop capability, then they could avoid the slow path sending it to the renderer.

b) do we really need to copy these buffers around (seems not very performant, even if the memory copy is fast)?

In the engine code path here it definitely doesn't need to be copied. The PR that spawned this issue is specifically aiming to improve heap usage by eliminating copies alltogeter. With dart2js it works very nicely, but the dart2wasm implementation hit some performance snags here due to the inability to ensure a zero copy path.

I think in this case it would be very useful, as it would open up either the option of asserting when the slow path is being
hit or having a dual path in the decoder to prevent jank.

Flutter engine does have this ability actually. It should be allowed to import private dart:_* libraries and can test via
// typed_array_tests_wasm.dart
import 'dart:_js_types' show JSUInt8ArrayImpl;

bool isJSTypedArray(Uint8List bytes) => bytes is JSUInt8ArrayImpl;

// typed_array_tests_nonwasm.dart
import 'dart:_js_types' show JSUInt8ArrayImpl;

bool isJSTypedArray(Uint8List bytes) => true;

and use conditional imports to select wasm vs non-wasm:
import 'typed_array_tests_wasm.dart' if (dart.library.html) 'typed_array_tests_nonwasm.dart';

decodeImageFromPixels(Uint8List pixels, ...) {
  if (!isJSTypedArray(pixels)) {
    throw 'Require Uint8List be backed by JS typed array. Please use ... to allocate those typed data arrays';
  }
  ...
}

If a user could request the array be allocated with host interop capability, then they could avoid the slow path
sending it to the renderer.

Best would be the flutter API requires it to be a typed data with host interop capability and users of the API have to ensure it is (which they can via allocating into JS JSUint8Array.withLength(...).toDart or explicitly copying  e.g..toJS.toDart with the knowledge that the .toJS may be slow).

Uint8List original = Uint8List(4000 * 4000 * 4);
final copy = original.toJS;
The second line here takes over 900ms my nice Macbook Pro when executing with flutter run --wasm,

Are these buffer sizes typical? 4000 * 4000 * 4 is 60 MB! That's a lot of memory to be copying around per frame - even with memppy that's several milliseconds.
I've recently added benchmarks for speed of strings/typed-data crossing the boundary (in dart-lang/sdk@4908814f3a9375a02f10a5d268afff879c3d16e3) and made some optimizations (amongst them dart-lang/sdk@09a7e4f52b568f977f1509eb3c02de18caf2571e), which led on my older machine to 40 MBs/second.
Though this is still far (maybe 10-20x) from memcopy. We'll have a closer look at what machine code it currently generates and see what can be done.

Flutter engine does have this ability actually. It should be allowed to import private dart:_* libraries and can test via

This is great.  I'll give this a shot. I think maybe it would be nice if libraries outside the engine could also do this.

Best would be the flutter API requires it to be a typed data with host interop capability and users of the API have to ensure it is (which they can via allocating into JS JSUint8Array.withLength(...).toDart or explicitly copying e.g..toJS.toDart with the knowledge that the .toJS may be slow).

I think this is definitely a reasonable starting point.

Are these buffer sizes typical? 4000 * 4000 * 4 is 60 MB! That's a lot of memory to be copying around per frame - even with memppy that's several milliseconds.

When dealing with raw image data, it's pretty easy to get large arrays like this. Browser game engines often run into similar performance challenges with transferring of texture data. An iPhone captures photos at 3024 x 4032, which is not too far off if you put that into a raw pixel buffer. In cases like PDF rendering, which is what uncovered some of the memory management problems that led to the PR, you'll end up with far more than 4000x4000x4 worth of pixel data that needs to be bound to textures. A PDF viewer can easily generate enough pixel data to run Skia's WASM module out of memory (2 GB). These libraries can definitely be made more efficient, but 60 MB of pixel data is pretty small compared to the total amount of image data that will be passed back over the course of viewing a multi page PDF.
That said, it's typically not 4k per frame. If you load an iPhone photo into a texture it's a one time op, on a PDF it's when the pages are in view and there's a balance between rendering time and resolution.

One point of discussion that should probably be considered here: better than using data buffers at all is actually to instantiate images directly from their URL using this dart:ui_web API: https://api.flutter.dev/flutter/dart-ui_web/createImageCodecFromUrl.html
Unfortunately, the framework doesn't take advantage of this API and we've discussed changing that. This is much more efficient in general, since we can rely on the browser to do the smart thing in terms of chunking the download, using hardware image decoding, etc. In some cases, the browser can avoid the raw pixels being on the CPU side altogether.

@eyebrowsoffire I think some of that work did recently land:
https://github.com/flutter/engine/commit/6312dfc492cd6e0eb0768b164912d97451029c3a
Though that only works if it's a browser supported image type. In the PDF case or something like HEIC (iphone codec), you'd still likely be calling to some other library to get the raw pixel data first and then heading through this raw pixel buffer API to bind it to a texture.

The issue is that the image widgets in the framework do not use the URL-based codec API. So even if that path is optimized, the common use case doesn't use that path.
And you're right that it doesn't universally solve this issue. But it should cover a number of common cases for users at least.

The second line here takes over 900ms my nice Macbook Pro when executing with flutter run --wasm

I've looked more into the code V8 generates and optimized this in a way that allows V8 to do a better job.
@jezell this operation should be now around 10x faster with newest flutter/flutter. It's still not at memcpy() speed - but we'll continue to look into it and push on things we'd need to get there.


Add viewbox line to the basic demo

This is in response to #92 , It's been a while and @sdiemert hasn't submitted a PR, so I thought I would.
I don't think it needs to be explained here, as the demo is trying to be super minimal. However, it might be worth explaining it elsewhere. Do you have any thoughts on where?

Thank you!!


fix failed timeout on context deadline

Used dial with Timeout on ftp package instead of Dial with context.
Attempting to create a unit test, was not able to create one due to the FTP interface privatizing the executable field and any other workaround would fail due to import cycling.

Looks good to me,  didn't know ftp had explicit dial with timeout call


Harden docker setup

Motivation
Our setup was too focused on our needs of rapid prototyping. This PR improves it a bit to be more secure.
Description

Disable anonymous login in Grafana.

Users that just docker-compose up the setup, Grafana will prompt to change the password on the first login. Default credentials are u: admin, p: admin.
For us that we constantly re-build Grafana to update the charts we can set GF_SECURITY_ADMIN_PASSWORD ENV to a well known password by the team so we can always login with it across builds

Remove cli link in package.json. Running the node through yarn is very problematic because signals are not properly propagated potentially causing zombie processes.
Don't expose API port by default
Move NODE_OPTIONS to ENV to split beacon_node and validator limits. Only extend the memory ceiling for the beacon_node process, not also the validator.

Remove cli link in package.json. Running the node through yarn is very problematic because signals are not properly propagated potentially causing zombie processes.

I don't think I had issues with that when not running in docker and this command is quite useful. Maybe we can replace it with some sh script

Remove cli link in package.json. Running the node through yarn is very problematic because signals are not properly propagated potentially causing zombie processes.

I don't think I had issues with that when not running in docker and this command is quite useful. Maybe we can replace it with some sh script

If we can force people to exclusive use npm not yarn to run this command then I'm okay with keeping it. Having a sh script is a good idea. Should it replace the soft link we have in the root?

@mpetrunic I've moved the CLI script change to a different PR to separate concerns, check https://github.com/ChainSafe/lodestar/pull/2893


Feature: Swapping opencv with skimage in rt_utils

Bundling opencv-python is challenging, should just fork rt_utils and try to swap the find_contours method from opencv to scikit-image.

Conflict between Qt from opencv (even though using the headless package) and PySide6 v6.5.2, making the executable not launch in Ubuntu with the following error:
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/dbouget/Documents/Code/Private/Raidionics/dist/Raidionics/PySide6/plugins/platforms" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

See => https://stackoverflow.com/a/67863156

I made an attempt at replacing opencv-python with scikit-image in the rt-utils package. Mechanically it runs but tests are not passing. It will likely be easier to debug this yourself with the raw data (which I do not have) and comparing it against the old implementaton output. Essentially, the final segmentation volumes are not identical - likely because the approximation do not yield the same result.
Anyways, you can use my branch for testing:
https://github.com/andreped/rt-utils/tree/scikit-image
Make a PR to my branch if you manage to fix it, then we could start replacing it with opencv-python-headless, if deemed suitable.

Might be that the current scikit-image implementation fails to capture holes: https://github.com/qurit/rt-utils/pull/53
Let me know how the final segmentation volumes look in 3D Slicer.

Resolved in 6f1f2bb66fdccc40f739db733608d73b38a3b725.


Replace annotations with Resource prefix with Bind prefix

Is this the correct way to update the javadoc for this project?
deploy_website.sh would overwrite the changes made in this patch unless the javadoc jar is created and uploaded to repository.sonatype.org

This was fixed by f6d9fb793cbaa6aff5f574edf1ad6d49c7ad980e and will be included in the next release. I don't really want to be modifying the release Javadoc, but whatever.


Add a wiki: Dawn 2055 Wiki

Link to origin wiki: https://dawn2055legacy.fandom.com/wiki/Main_Page
Link to destination (independent) wiki: https://dawn2055.wiki.gg/wiki/Dawn_2055_Wiki

It looks like the Fandom wiki is about the "legacy" version of the game, while the wiki.gg wiki is about the new version. Would this still be an applicable redirect?


feat(CIV-653): Donate page redirection

What?

Linking the Donate button to the Donate page URL created on Razorpay.
Removed ‘Submit a Consultation’ button from Header and added it to footer.

How?
Flows to be followed:
For Donate button:
Clicking on the Donate button to trigger this URL Pay for Donate to Civis by CIVIS.
For Submit a Consultation
If the user is signed in -> the user gets directed to Civis | Get your voice heard by lawmakers
If the user is not signed in -> the user gets directed to the Login/Sign up page Civis | Get your voice heard by lawmakers
Designs:

Donate button mobile & Donate button desktop
Edited footer for Submit a Consultation

Screenshots:
[DESKTOP] Donate button in header with Submit a Consultation button removed:

[MOBILE] Donate button in mobile for logged in user:

[MOBILE] Donate button in mobile when user has not logged in:

[DESKTOP] Submit a Consultation in footer:

Please use master as base branch for new features


Use pyside2-rcc if pyrcc5 fail

Description

Re implement of #1080 which was broken in #1262, this time with test
https://github.com/napari/napari/issues/1618#issuecomment-687473278
Type of change

[x] Bug-fix (non-breaking change which fixes an issue)

References

How has this been tested?

[x] example: all tests pass with my change

Final checklist:

[x] My PR is the minimum possible work for the desired functionality
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have added tests that prove my fix is effective or that my feature works

I do not know how to create windows executable and have no experience with this so I disable test for windows.
@sofroniewn ready for review


feat: add educative

Educative Creation Request
Educative is a hands-on learning platform for software developers. We offer courses on topics ranging from Python to Kubernetes and everything in between. Our courses combine text, video, and coding environments to make learning to code as easy as possible.
Slogan

Learn by doing

Size

51-200

Links

Company
Company Verified
Careers
Careers Verified
Icon
Icon Verified
glassdoor
glassdoor Status

https://www.educative.io/
✅
https://jobs.lever.co/educative
✅
https://pkstatic.imgix.net/media/companyprofile/4574/Educative_Inc._logo.jpeg
✅
https://www.glassdoor.com/Overview/Working-at-Educative-WA-EI_IE2572065.11,23.htm
✅

Careers Links

URL
Verified
URL
Verified

https://jobs.lever.co/educative/70725978-976f-4022-b1fa-28a27fbbfc86
✅
https://jobs.lever.co/educative
✅

Job board data has been pulled to Gandi. Jobs count: 17


How to run properly on Centos server

Hello, authors.I need to run this software on centos, but I'm having some problems with it and I'm asking you guys for advice.
Here I made some changes to the makefile. ifeq ($(shell cat /etc/os-release | grep -qEi 'centos'; echo $$?),0) # Centos   #ifeq ($(UNAME_R),18.7.0)     include makeopts.centos     $(info System identified as centos)     SYSTEM_IDENTIFIED = 1   #endif endif
corresponding makeopts.centos is `include compileropts.gnu
FC = mpif90
pgplot
#LIBS += -L/usr/lib/ -lpgplot
netcdf
NETCDF_DIR = /public/home/zhangzl/software/netcdf4-needed/lib
LIBS += $(NETCDF_DIR)/libnetcdff.a -L $(NETCDF_DIR) -lnetcdf
INCLUDE_DIRS += -I /public/home/zhangzl/software/netcdf4-needed/include
scalapack
LIBS +=	-L /public/home/zhangzl/software/scalapack-2.2.0
/public/home/zhangzl/software/BLAS-3.12.0/lib/libblas.a
/public/home/zhangzl/software/BLACS/LIB/blacs.a
/public/home/zhangzl/software/BLACS/LIB/blacsF77init_MPI-LINUX-0.a
/public/home/zhangzl/software/BLACS/LIB/blacsCinit_MPI-LINUX-0.a
/public/home/zhangzl/software/BLACS/LIB/blacsF77.a
/public/home/zhangzl/software/BLACS/LIB/blacs_MPI-LINUX-0.a `
The compileropts.centos is COMMON_OPTION  = -save -r8 #-i8 COMMON_OPTION2 = -r8 #-i8  COMMON_OPTION3 =  COMMON_OPTION4  = -r8 #-i4  MOD_DIR_FLAG = -module $(MOD_DIR)
Now when I do the make operation, I run into some problems
①(.text+0x20): undefined reference to main'
obj/ql_myra.o: In function __ql_myra_mod_MOD_ql_myra_write': ql_myra.f:(.text+0x11744): undefined reference to blacs_barrier_'
obj/wdot_test.o: In function __wdot_mod_MOD_wdot_new_maxwellian': wdot_test.f90:(.text+0xa6c0): undefined reference to blacs_barrier_'
obj/current.o: In function current_orbit_': current.f:(.text+0x17c4f): undefined reference to fftn2_'
current.f:(.text+0x245c2): undefined reference to blacs_barrier_' obj/current.o: In function ntilda__':
current.f:(.text+0x2b22e): undefined reference to blacs_barrier_' obj/current.o: In function current_':
current.f:(.text+0x33792): undefined reference to blacs_barrier_' obj/current.o: In function current_1_':
current.f:(.text+0x3d416): undefined reference to blacs_barrier_' obj/current.o: In function current_2_':
current.f:(.text+0x459f2): undefined reference to blacs_barrier_' obj/current.o:current.f:(.text+0x49f11): more undefined references to blacs_bar                rier_' follow
obj/setupblacs.o: In function setupblacs_': setupblacs.f:(.text+0x5f): undefined reference to blacs_pinfo_'
setupblacs.f:(.text+0x8a): undefined reference to blacs_setup_' setupblacs.f:(.text+0xa5): undefined reference to blacs_get_'
setupblacs.f:(.text+0xf9): undefined reference to blacs_gridinit_' setupblacs.f:(.text+0x38d): undefined reference to blacs_gridexit_'
setupblacs.f:(.text+0x4fd): undefined reference to blacs_get_' setupblacs.f:(.text+0x521): undefined reference to blacs_gridinit_'
setupblacs.f:(.text+0x545): undefined reference to blacs_gridinfo_' obj/rf2x_setup2.o: In function run_rf2x_':
rf2x_setup2.f:(.text+0x3f25): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x3f6a): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x3faf): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x3ff4): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x4039): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x407e): more undefined references to rh                ograte_' follow
obj/read_cql3d.o: In function __read_cql3d_MOD_netcdfr3d': read_cql3d.f90:(.text+0x205): undefined reference to __netcdf_MOD_nf90_open'
read_cql3d.f90:(.text+0x347): undefined reference to __netcdf_MOD_nf90_inq_dimi                d' read_cql3d.f90:(.text+0x411): undefined reference to __netcdf_MOD_nf90_inq_dimi                d'
read_cql3d.f90:(.text+0x4db): undefined reference to __netcdf_MOD_nf90_inq_dimi                d' read_cql3d.f90:(.text+0x5a5): undefined reference to _netcdf_MOD_nf90_inq_dimi                d'
read_cql3d.f90:(.text+0x66f): undefined reference to __netcdf_MOD_nf90_inq_dimi                d' read_cql3d.f90:(.text+0x73f): undefined reference to netcdf_MOD_nf90_inquire                dimension'
read_cql3d.f90:(.text+0x81a): undefined reference to ncdinq_' read_cql3d.f90:(.text+0x844): undefined reference to ncdinq'
read_cql3d.f90:(.text+0x86e): undefined reference to ncdinq_' read_cql3d.f90:(.text+0x898): undefined reference to ncdinq'
read_cql3d.f90:(.text+0x19cc): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x19eb): undefined reference to __netcdf_MOD_nf90_get_var                _eightbytereal'
read_cql3d.f90:(.text+0x1a83): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1ab6): undefined reference to __netcdf_MOD_nf90_get_var                _1d_eightbytereal'
read_cql3d.f90:(.text+0x1ad5): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1b08): undefined reference to __netcdf_MOD_nf90_get_var                _1d_fourbyteint'
read_cql3d.f90:(.text+0x1b3f): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1b72): undefined reference to __netcdf_MOD_nf90_get_var                _2d_eightbytereal'
read_cql3d.f90:(.text+0x1b91): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1bc4): undefined reference to __netcdf_MOD_nf90_get_var                _1d_eightbytereal'
read_cql3d.f90:(.text+0x1be3): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1c16): undefined reference to __netcdf_MOD_nf90_get_var                _3d_eightbytereal'
read_cql3d.f90:(.text+0x1d76): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x1da9): undefined reference to __netcdf_MOD_nf90_get_var                _2d_eightbytereal'
read_cql3d.f90:(.text+0x215b): undefined reference to __netcdf_MOD_nf90_inq_var                id' read_cql3d.f90:(.text+0x218e): undefined reference to __netcdf_MOD_nf90_get_var                _2d_eightbytereal'
read_cql3d.f90:(.text+0x23f0): undefined reference to __netcdf_MOD_nf90_close' collect2: error: ld returned 1 exit status make: *** [xaorsa2d] Error 1
② If I compile with mpifort, the error is reported as src/CQL3D_SETUP/read_cql3d.f90(35): error #7013: This module file was not generated by anyrelease of this compiler.[NETCDF] use netcdf ------∧ src/COL3D_SETUP/read cql3d.f90(432):internal error:Please visit 'http://www.intel.com/sotware/products/support' for assistance.  if ( iret .ne. NF90_NOERR) then [Aborting due to internal error. ] compilation aborted for src/CQL3D_SETUP/read cql3d.f90(code 1) make: ***[obi/read cql3d.o]Error 1

Can you share on of the compile commands from the output. It seems that your libraries are not being found during the link phase.
Using mpifort will require "-mkl=cluster" for scalapack and blas support and intel built netcdff library and module file.

Again, I'm sorry to bother you.Right now I'm using the NETCDF library compiled by intel's ifort, the corresponding makeopts.centos and compileropts.centos are shown. But the results reported are related to the file read_cql3d.f90.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/28/2024 00:51 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Can you share on of the compile commands from the output. It seems that your libraries are not being found during the link phase.
Using mpifort will require "-mkl=cluster" for scalapack and blas support and intel built netcdff library and module file.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

I'm sorry sir, and there are some library calls that don't show up in the error report.
---- Replied Message ----
| From | @.> |
| Date | 5/28/2024 12:30 |
| To | @.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Again, I'm sorry to bother you.Right now I'm using the NETCDF library compiled by intel's ifort, the corresponding makeopts.centos and compileropts.centos are shown. But the results reported are related to the file read_cql3d.f90.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/28/2024 00:51 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Can you share on of the compile commands from the output. It seems that your libraries are not being found during the link phase.
Using mpifort will require "-mkl=cluster" for scalapack and blas support and intel built netcdff library and module file.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Can you share on of the compile commands from the output. It seems that your libraries are not being found during the link phase.
Using mpifort will require "-mkl=cluster" for scalapack and blas support and intel built netcdff library and module file.

Hello teacher.
The problems encountered with make have now been reduced, but there are a few libraries that are not recognized.
/public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__'
obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_'
obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_'
obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to `rhograte_' follow
make: *** [xaorsa2d] Error 1

Those are all routines in the main program. Try
make clean ; make
and post the compile command for aorsa2dmain.o
On 2024-05-30 06:50, yang5891 wrote:

Can you share on of the compile commands from the output. It seems
that your libraries are not being found during the link phase.
Using mpifort will require "-mkl=cluster" for scalapack and blas
support and intel built netcdff library and module file.

Hello teacher.
The problems encountered with make have now been reduced, but there are
a few libraries that are not recognized.
/public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o:
In function main': for_main.c:(.text+0x2e): undefined reference to
MAIN__'
obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a):
undefined reference to fftn2_'
obj/rf2x_setup2.o: In function run_rf2x_':
rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_'
rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_'
obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined
references to `rhograte_' follow
make: *** [xaorsa2d] Error 1
--
Reply to this email directly, view it on GitHub [1], or unsubscribe
[2].
You are receiving this because you commented.Message ID:
@.***>

--
-john
Principal Research Scientist John Wright
Office<PHONE_NUMBER>
zoom: https://mit.zoom.us/my/jcwright
Links:
[1]
https://github.com/ORNL-Fusion/aorsa/issues/49#issuecomment-2139288625
[2]
https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU

Those are all routines in the main program. Try make clean ; make and post the compile command for aorsa2dmain.o
…
On 2024-05-30 06:50, yang5891 wrote: > Can you share on of the compile commands from the output. It seems > that your libraries are not being found during the link phase. > > Using mpifort will require "-mkl=cluster" for scalapack and blas > support and intel built netcdff library and module file. Hello teacher. The problems encountered with make have now been reduced, but there are a few libraries that are not recognized. /public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__' obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_' obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to `rhograte_' follow make: *** [xaorsa2d] Error 1 -- Reply to this email directly, view it on GitHub [1], or unsubscribe [2]. You are receiving this because you commented.Message ID: @.***>
-- -john Principal Research Scientist John Wright Office<PHONE_NUMBER> zoom: https://mit.zoom.us/my/jcwright Links: ------ [1] #49 (comment) [2] https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU

Thank you teacher, I can raw xaorsa2d this file. Since I don't use pgplot to draw diagrams, I commented out the relevant statements. But now I get an error when running xaorsa2d:
mpirun -n 1 ../../xaorsa2d
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image                                PC                               Routine                       Line        Source
xaorsa2d<PHONE_NUMBER>8181DA        for__signal_handl         Unknown  Unknown
libpthread-2.17.s      00007FB4D974B630         Unknown                     Unknown  Unknown
libmpi.so.20.10.2      00007FB4D9CC2AC5        MPI_Comm_size          Unknown  Unknown
libmkl_blacs_inte      00007FB4E0CE2A39         MKLMPI_Comm_size   Unknown  Unknown
libmkl_blacs_inte      00007FB4E0CE0D31         mkl_blacs_init              Unknown  Unknown
libmkl_blacs_inte      00007FB4E0CD1898         blacs_pinfo__              Unknown  Unknown
xaorsa2d<PHONE_NUMBER>5FB088           Unknown                   Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412E92           Unknown                   Unknown  Unknown
libc-2.17.so               00007FB4D9390555         __libc_start_main        Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412DA9          Unknown                  Unknown  Unknown
Primary job  terminated normally, but 1 process returned
a non-zero exit code.. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[63410,1],0]
Exit code:    174

Those are all routines in the main program. Try make clean ; make and post the compile command for aorsa2dmain.o
…
On 2024-05-30 06:50, yang5891 wrote: > Can you share on of the compile commands from the output. It seems > that your libraries are not being found during the link phase. > > Using mpifort will require "-mkl=cluster" for scalapack and blas > support and intel built netcdff library and module file. Hello teacher. The problems encountered with make have now been reduced, but there are a few libraries that are not recognized. /public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__' obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_' obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to `rhograte_' follow make: *** [xaorsa2d] Error 1 -- Reply to this email directly, view it on GitHub [1], or unsubscribe [2]. You are receiving this because you commented.Message ID: @.***>
-- -john Principal Research Scientist John Wright Office<PHONE_NUMBER> zoom: https://mit.zoom.us/my/jcwright Links: ------ [1] #49 (comment) [2] https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU

谢谢你老师，我可以生生xaorsa2d这个文件。因为我不使用pgplot画图，所以将相关语句注释掉了。但是现在运行xaorsa2d时出现了错误：
` mpirun -n 1 ../../xaorsa2d
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source
xaorsa2d<PHONE_NUMBER>8181DA  for__signal_handl     Unknown  Unknown
libpthread-2.17.s  00007FB4D974B630  Unknown               Unknown  Unknown
libmpi.so.20.10.2  00007FB4D9CC2AC5  MPI_Comm_size         Unknown  Unknown
libmkl_blacs_inte  00007FB4E0CE2A39  MKLMPI_Comm_size      Unknown  Unknown
libmkl_blacs_inte  00007FB4E0CE0D31  mkl_blacs_init        Unknown  Unknown
libmkl_blacs_inte  00007FB4E0CD1898  blacs_pinfo__         Unknown  Unknown
xaorsa2d<PHONE_NUMBER>5FB088  Unknown               Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412E92  Unknown               Unknown  Unknown
libc-2.17.so       00007FB4D9390555  __libc_start_main     Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412DA9  Unknown               Unknown  Unknown
Primary job  terminated normally, but 1 process returned
a non-zero exit code.. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[63410,1],0]
Exit code:    174
How should these errors be resolved？
`

Those are all routines in the main program. Try make clean ; make and post the compile command for aorsa2dmain.o
…
On 2024-05-30 06:50, yang5891 wrote: > Can you share on of the compile commands from the output. It seems > that your libraries are not being found during the link phase. > > Using mpifort will require "-mkl=cluster" for scalapack and blas > support and intel built netcdff library and module file. Hello teacher. The problems encountered with make have now been reduced, but there are a few libraries that are not recognized. /public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__' obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_' obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to `rhograte_' follow make: *** [xaorsa2d] Error 1 -- Reply to this email directly, view it on GitHub [1], or unsubscribe [2]. You are receiving this because you commented.Message ID: @.***>
-- -john Principal Research Scientist John Wright Office<PHONE_NUMBER> zoom: https://mit.zoom.us/my/jcwright Links: ------ [1] #49 (comment) [2] https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU

Thank you teacher, I can now compile and generate xaorsa2d files. Since I don't need pgplot, I commented out the relevant statements. But now I get an error when executing [xaorsa2d.]
`forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source
xaorsa2d<PHONE_NUMBER>8181DA  for__signal_handl     Unknown  Unknown
libpthread-2.17.s  00002B448DA74630  Unknown               Unknown  Unknown
libmpi.so.20.10.2  00002B448D49EAC5  MPI_Comm_size         Unknown  Unknown
libmkl_blacs_inte  00002B44864E7A39  MKLMPI_Comm_size      Unknown  Unknown
libmkl_blacs_inte  00002B44864E5D31  mkl_blacs_init        Unknown  Unknown
libmkl_blacs_inte  00002B44864D6898  blacs_pinfo__         Unknown  Unknown
xaorsa2d<PHONE_NUMBER>5FB088  Unknown               Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412E92  Unknown               Unknown  Unknown
libc-2.17.so       00002B448DCA3555  __libc_start_main     Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412DA9  Unknown               Unknown  Unknown
Primary job  terminated normally, but 1 process returned
a non-zero exit code.. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[55252,1],0]
Exit code:    174
`

Your libraries aren’t going runtime. Is your ld_library_path set ?-johnOn May 31, 2024, at 5:01 AM, yang5891 @.***> wrote:
Those are all routines in the main program. Try make clean ; make and post the compile command for aorsa2dmain.o
…
On 2024-05-30 06:50, yang5891 wrote: > Can you share on of the compile commands from the output. It seems > that your libraries are not being found during the link phase. > > Using mpifort will require "-mkl=cluster" for scalapack and blas > support and intel built netcdff library and module file. Hello teacher. The problems encountered with make have now been reduced, but there are a few libraries that are not recognized. /public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__' obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_' obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to `rhograte_' follow make: *** [xaorsa2d] Error 1 -- Reply to this email directly, view it on GitHub [1], or unsubscribe [2]. You are receiving this because you commented.Message ID: @.***>
-- -john Principal Research Scientist John Wright Office<PHONE_NUMBER> zoom: https://mit.zoom.us/my/jcwright Links: ------ [1] #49 (comment) [2] https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU
Thank you teacher, I can now compile and generate xaorsa2d files. Since I don't need pgplot, I commented out the relevant statements. But now I get an error when executing [xaorsa2d.]
`forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source
xaorsa2d<PHONE_NUMBER>8181DA  for__signal_handl     Unknown  Unknown
libpthread-2.17.s  00002B448DA74630  Unknown               Unknown  Unknown
libmpi.so.20.10.2  00002B448D49EAC5  MPI_Comm_size         Unknown  Unknown
libmkl_blacs_inte  00002B44864E7A39  MKLMPI_Comm_size      Unknown  Unknown
libmkl_blacs_inte  00002B44864E5D31  mkl_blacs_init        Unknown  Unknown
libmkl_blacs_inte  00002B44864D6898  blacs_pinfo__         Unknown  Unknown
xaorsa2d<PHONE_NUMBER>5FB088  Unknown               Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412E92  Unknown               Unknown  Unknown
libc-2.17.so       00002B448DCA3555  __libc_start_main     Unknown  Unknown
xaorsa2d<PHONE_NUMBER>412DA9  Unknown               Unknown  Unknown
Primary job  terminated normally, but 1 process returned
a non-zero exit code.. Per user-direction, the job has been aborted.
mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[55252,1],0]
Exit code:    174
`
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Your libraries aren’t going runtime. Is your ld_library_path set ?-johnOn May 31, 2024, at 5:01 AM, yang5891 @.> wrote: Those are all routines in the main program. Try make clean ; make and post the compile command for aorsa2dmain.o … On 2024-05-30 06:50, yang5891 wrote: > Can you share on of the compile commands from the output. It seems > that your libraries are not being found during the link phase. > > Using mpifort will require "-mkl=cluster" for scalapack and blas > support and intel built netcdff library and module file. Hello teacher. The problems encountered with make have now been reduced, but there are a few libraries that are not recognized. /public/software/compiler/intel-compiler/2021.3.0/bin/intel64/../../compiler/lib/intel64_lin/for_main.o: In function main': for_main.c:(.text+0x2e): undefined reference to MAIN__' obj/current.o: In function current_orbit_': current.f:(.text+0x1b0a): undefined reference to fftn2_' obj/rf2x_setup2.o: In function run_rf2x_': rf2x_setup2.f:(.text+0x15c3): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x15f0): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x161d): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x164a): undefined reference to rhograte_' rf2x_setup2.f:(.text+0x1677): undefined reference to rhograte_' obj/rf2x_setup2.o:rf2x_setup2.f:(.text+0x16a4): more undefined references to rhograte_' follow make: *** [xaorsa2d] Error 1 -- Reply to this email directly, view it on GitHub [1], or unsubscribe [2]. You are receiving this because you commented.Message ID: @.***> -- -john Principal Research Scientist John Wright Office<PHONE_NUMBER> zoom: https://mit.zoom.us/my/jcwright Links: ------ [1] #49 (comment) [2] https://github.com/notifications/unsubscribe-auth/AB7SLTPE3LGRXOMIWPPUBX3ZE4ABFAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZZGI4DQNRSGU Thank you teacher, I can now compile and generate xaorsa2d files. Since I don't need pgplot, I commented out the relevant statements. But now I get an error when executing [xaorsa2d.] forrtl: severe (174): SIGSEGV, segmentation fault occurred Image PC Routine Line Source xaorsa2d<PHONE_NUMBER>8181DA for__signal_handl Unknown Unknown libpthread-2.17.s 00002B448DA74630 Unknown Unknown Unknown libmpi.so.20.10.2 00002B448D49EAC5 MPI_Comm_size Unknown Unknown libmkl_blacs_inte 00002B44864E7A39 MKLMPI_Comm_size Unknown Unknown libmkl_blacs_inte 00002B44864E5D31 mkl_blacs_init Unknown Unknown libmkl_blacs_inte 00002B44864D6898 blacs_pinfo__ Unknown Unknown xaorsa2d<PHONE_NUMBER>5FB088 Unknown Unknown Unknown xaorsa2d<PHONE_NUMBER>412E92 Unknown Unknown Unknown libc-2.17.so 00002B448DCA3555 __libc_start_main Unknown Unknown xaorsa2d<PHONE_NUMBER>412DA9 Unknown Unknown Unknown Primary job terminated normally, but 1 process returned a non-zero exit code.. Per user-direction, the job has been aborted. mpirun detected that one or more processes exited with non-zero status, thus causing the job to be terminated. The first process to do so was: Process name: [[55252,1],0] Exit code: 174 ` —Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.>

I'm sorry teacher, I've been trying for the past few days, but  I've been trying for the past few days, but I still haven't installed it on the centos server.

Excuse me sir, I am using openmpi's intel-4.0.3 compiler here. The mkl library used is intel-2021.3.0 as shown in the file. it is possible to compile and generate xaorsa2d, but the execution reports an error.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>

You will have to share the error message -johnOn Jun 2, 2024, at 10:04 AM, yang5891 @.***> wrote:
Excuse me sir, I am using openmpi's intel-4.0.3 compiler here. The mkl library used is intel-2021.3.0 as shown in the file. it is possible to compile and generate xaorsa2d, but the execution reports an error.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Teacher, this is the problem I'm having when running xaorsa2d.
Caught signal 11 (Segmentation fault: address not mapped to object at addres s 0x440000f8)
==== backtrace (tid: 11614) ====
0 0x000000000006e600 opal_mutex_unlock() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profi le/../../../../opal/threads/mutex_unix.h:158
1 0x000000000006e600 PMPI_Comm_size() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profile/ pcomm_size.c:63
2 0x0000000000029a39 MKLMPI_Comm_size() ???:0
3 0x0000000000027d31 mkl_blacs_init() ???:0
4 0x0000000000018898 blacs_pinfo_() ???:0
5 0x0000000000605248 MAIN__() ???:0
6 0x0000000000414b62 main() ???:0
7 0x0000000000022555 __libc_start_main() ???:0
8 0x0000000000414a69 _start() ???:0
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
xaorsa2d<PHONE_NUMBER>83F74A for__signal_handl Unknown Unknown
libpthread-2.17.s 00007F481CAAE630 Unknown Unknown Unknown
libmpi.so.40.20.3 00007F481D02B600 MPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403DA39 MKLMPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403BD31 mkl_blacs_init Unknown Unknown
libmkl_blacs_inte 00007F482402C898 blacs_pinfo__ Unknown Unknown
xaorsa2d<PHONE_NUMBER>605248 Unknown Unknown Unknown
xaorsa2d<PHONE_NUMBER>414B62 Unknown Unknown Unknown
libc-2.17.so 00007F481C6F3555 __libc_start_main Unknown Unknown
xaorsa2d<PHONE_NUMBER>414A69 Unknown Unknown Unknown
Primary job terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[55098,1],0]
Exit code: 174
---- Replied Message ----
| From | John C. @.> |
| Date | 6/2/2024 22:22 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
You will have to share the error message -johnOn Jun 2, 2024, at 10:04 AM, yang5891 @.***> wrote:
Excuse me sir, I am using openmpi's intel-4.0.3 compiler here. The mkl library used is intel-2021.3.0 as shown in the file. it is possible to compile and generate xaorsa2d, but the execution reports an error.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

What’s your mpirun command? What doesmpirun hostnameReturn?Which test case are you running ? They need one core. -johnOn Jun 2, 2024, at 10:40 AM, yang5891 @.***> wrote:
Teacher, this is the problem I'm having when running xaorsa2d.
Caught signal 11 (Segmentation fault: address not mapped to object at addres s 0x440000f8)
==== backtrace (tid: 11614) ====
0 0x000000000006e600 opal_mutex_unlock() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profi le/../../../../opal/threads/mutex_unix.h:158
1 0x000000000006e600 PMPI_Comm_size() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profile/ pcomm_size.c:63
2 0x0000000000029a39 MKLMPI_Comm_size() ???:0
3 0x0000000000027d31 mkl_blacs_init() ???:0
4 0x0000000000018898 blacs_pinfo_() ???:0
5 0x0000000000605248 MAIN__() ???:0
6 0x0000000000414b62 main() ???:0
7 0x0000000000022555 __libc_start_main() ???:0
8 0x0000000000414a69 _start() ???:0
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
xaorsa2d<PHONE_NUMBER>83F74A for__signal_handl Unknown Unknown
libpthread-2.17.s 00007F481CAAE630 Unknown Unknown Unknown
libmpi.so.40.20.3 00007F481D02B600 MPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403DA39 MKLMPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403BD31 mkl_blacs_init Unknown Unknown
libmkl_blacs_inte 00007F482402C898 blacs_pinfo__ Unknown Unknown
xaorsa2d<PHONE_NUMBER>605248 Unknown Unknown Unknown
xaorsa2d<PHONE_NUMBER>414B62 Unknown Unknown Unknown
libc-2.17.so 00007F481C6F3555 __libc_start_main Unknown Unknown
xaorsa2d<PHONE_NUMBER>414A69 Unknown Unknown Unknown
Primary job terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[55098,1],0]
Exit code: 174
---- Replied Message ----
| From | John C. @.> |
| Date | 6/2/2024 22:22 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
You will have to share the error message -johnOn Jun 2, 2024, at 10:04 AM, yang5891 @.***> wrote:
Excuse me sir, I am using openmpi's intel-4.0.3 compiler here. The mkl library used is intel-2021.3.0 as shown in the file. it is possible to compile and generate xaorsa2d, but the execution reports an error.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

The command I use for mpirun is mpirun -n 1 ... /... /xaorsa2d and used the example DIIID-whistler inside examples. Here the program doesn't seem to start properly.
---- Replied Message ----
| From | John C. @.> |
| Date | 6/3/2024 00:17 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
What’s your mpirun command? What doesmpirun hostnameReturn?Which test case are you running ? They need one core. -johnOn Jun 2, 2024, at 10:40 AM, yang5891 @.***> wrote:
Teacher, this is the problem I'm having when running xaorsa2d.
Caught signal 11 (Segmentation fault: address not mapped to object at addres s 0x440000f8)
==== backtrace (tid: 11614) ====
0 0x000000000006e600 opal_mutex_unlock() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profi le/../../../../opal/threads/mutex_unix.h:158
1 0x000000000006e600 PMPI_Comm_size() /tmp/clussoft.20240516134350/openmpi-4.0.3/ompi/mpi/c/profile/ pcomm_size.c:63
2 0x0000000000029a39 MKLMPI_Comm_size() ???:0
3 0x0000000000027d31 mkl_blacs_init() ???:0
4 0x0000000000018898 blacs_pinfo_() ???:0
5 0x0000000000605248 MAIN__() ???:0
6 0x0000000000414b62 main() ???:0
7 0x0000000000022555 __libc_start_main() ???:0
8 0x0000000000414a69 _start() ???:0
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
xaorsa2d<PHONE_NUMBER>83F74A for__signal_handl Unknown Unknown
libpthread-2.17.s 00007F481CAAE630 Unknown Unknown Unknown
libmpi.so.40.20.3 00007F481D02B600 MPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403DA39 MKLMPI_Comm_size Unknown Unknown
libmkl_blacs_inte 00007F482403BD31 mkl_blacs_init Unknown Unknown
libmkl_blacs_inte 00007F482402C898 blacs_pinfo__ Unknown Unknown
xaorsa2d<PHONE_NUMBER>605248 Unknown Unknown Unknown
xaorsa2d<PHONE_NUMBER>414B62 Unknown Unknown Unknown
libc-2.17.so 00007F481C6F3555 __libc_start_main Unknown Unknown
xaorsa2d<PHONE_NUMBER>414A69 Unknown Unknown Unknown
Primary job terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.

mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:
Process name: [[55098,1],0]
Exit code: 174
---- Replied Message ----
| From | John C. @.> |
| Date | 6/2/2024 22:22 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
You will have to share the error message -johnOn Jun 2, 2024, at 10:04 AM, yang5891 @.***> wrote:
Excuse me sir, I am using openmpi's intel-4.0.3 compiler here. The mkl library used is intel-2021.3.0 as shown in the file. it is possible to compile and generate xaorsa2d, but the execution reports an error.
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.

Thank you, teacher, for your patience these days. My brother in my research group helped me find the relevant parameters for calculating the number of cores (nprow x npcol = nproc).But is that okay as long as the product of the two is equal to the number of cores needed for the calculation? For example, if I use quad-core computing, is there a difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

It affects the decomposition of the matrix in the code. 2 x 2 is better than one by four. For the test cases you should not need to change anything. They just use one by one.-johnOn Jun 4, 2024, at 7:52 AM, yang5891 @.***> wrote:
Thank you, teacher, for your patience these days. My brother in my research group helped me find the relevant parameters for calculating the number of cores (nprow x npcol = nproc).But is that okay as long as the product of the two is equal to the number of cores needed for the calculation? For example, if I use quad-core computing, is there a difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Thank you, teacher, but the number of cores in our group is 32, and I need to set more points and consider different ions and concentrations in the future. How should I set these two parameters?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 19:54 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It affects the decomposition of the matrix in the code. 2 x 2 is better than one by four. For the test cases you should not need to change anything. They just use one by one.-johnOn Jun 4, 2024, at 7:52 AM, yang5891 @.***> wrote:
Thank you, teacher, for your patience these days. My brother in my research group helped me find the relevant parameters for calculating the number of cores (nprow x npcol = nproc).But is that okay as long as the product of the two is equal to the number of cores needed for the calculation? For example, if I use quad-core computing, is there a difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Yes teacher. I can now run every example normally. For example, the final output of DIIID-helion is as follows（Here I used nprow=4, npcol=8）
time to do plots = 0.039 min
1
total cpu time used = 0.097 min
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 21:16 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
First you need to verify the test case works so far you show me that you get errors for that-johnOn Jun 4, 2024, at 8:00 AM, yang5891 @.***> wrote:
Thank you, teacher, but the number of cores in our group is 32, and I need to set more points and consider different ions and concentrations in the future. How should I set these two parameters?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 19:54 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It affects the decomposition of the matrix in the code. 2 x 2 is better than one by four. For the test cases you should not need to change anything. They just use one by one.-johnOn Jun 4, 2024, at 7:52 AM, yang5891 @.***> wrote:
Thank you, teacher, for your patience these days. My brother in my research group helped me find the relevant parameters for calculating the number of cores (nprow x npcol = nproc).But is that okay as long as the product of the two is equal to the number of cores needed for the calculation? For example, if I use quad-core computing, is there a difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

you can look at the namelist md file and the tests for guidance. For
problem size set nprow=npcol=8 or greater. If you only have 32 cores,
use 4,4
ideally nmodesx=nmodesy=128 but that requires several nodes and
significant meory. You might try 32,32 but the case will be severely
under resolved depending on the scales involved.
good luck
On 2024-06-04 09:43, yang5891 wrote:

Yes teacher. I can now run every example normally. For example, the
final output of DIIID-helion is as follows（Here I used nprow=4,
npcol=8）
time to do plots = 0.039 min
1
total cpu time used = 0.097 min
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 21:16 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos
server (Issue #49) |
First you need to verify the test case works so far you show me that
you get errors for that-johnOn Jun 4, 2024, at 8:00 AM, yang5891
@.***> wrote:
Thank you, teacher, but the number of cores in our group is 32, and I
need to set more points and consider different ions and concentrations
in the future. How should I set these two parameters?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 19:54 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos
server (Issue #49) |
It affects the decomposition of the matrix in the code. 2 x 2 is better
than one by four. For the test cases you should not need to change
anything. They just use one by one.-johnOn Jun 4, 2024, at 7:52 AM,
yang5891 @.***> wrote:
Thank you, teacher, for your patience these days. My brother in my
research group helped me find the relevant parameters for calculating
the number of cores (nprow x npcol = nproc).But is that okay as long as
the product of the two is equal to the number of cores needed for the
calculation? For example, if I use quad-core computing, is there a
difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos
server (Issue #49) |
It seems like you are having issues running with mpi. This error has to
do with starting up and executing under mpi run, not with aorsa itself.
I suggest you verify you can compile and run a simple mpi program.
Assuming you are using intel compile, grab cpi.c from
https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show
mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for
help. You issues seem to be outside of aorsa and have to do with basic
compilation and execution of parallel programs.
--
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID:
@.***>
--Reply to this email directly, view it on GitHub, or unsubscribe.You
are receiving this because you commented.Message ID: @.***>
--
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID:
@.***>
--Reply to this email directly, view it on GitHub, or unsubscribe.You
are receiving this because you commented.Message ID: @.***>
--
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID:
@.***>
--
Reply to this email directly, view it on GitHub [1], or unsubscribe
[2].
You are receiving this because you commented.Message ID:
@.***>

--
-john
Principal Research Scientist John Wright
Office<PHONE_NUMBER>
zoom: https://mit.zoom.us/my/jcwright
Links:
[1]
https://github.com/ORNL-Fusion/aorsa/issues/49#issuecomment-2147574133
[2]
https://github.com/notifications/unsubscribe-auth/AB7SLTL4QXX2DP5W5HN3KEDZFXAAXAVCNFSM6AAAAABILFD6TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBXGU3TIMJTGM
--=_bdd64717b3167e2d2780a239b48ebf89
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8

you can look at the namelist md file and the tests for guidance. For pro=
blem size set nprow=3Dnpcol=3D8 or greater. If you only have 32 cores, use =
4,4
ideally nmodesx=3Dnmodesy=3D128 but that requires several nodes and sign=
ificant meory. You might try 32,32 but the case will be severely under reso=
lved depending on the scales involved.

good luck

On 2024-06-04 09:43, yang5891 wrote:

Yes teacher. I can now run every example normally. For example, the final o=
utput of DIIID-helion is as follows=EF=BC=88Here I used nprow=3D4, npcol=3D=
8=EF=BC=89time to do plots =3D 0.039 min1total cpu time used =3D 0.097 min----=
 Replied Message ----| From | John C<EMAIL_ADDRESS>|| Date |=
 6/4/2024 21:16 || To |<EMAIL_ADDRESS>|| Cc |<EMAIL_ADDRESS><EMAIL_ADDRESS>|| Subject | Re: [ORNL-Fusion/aorsa] How to ru=
n properly on Centos server (Issue #49) |First you need to verify the=
 test case works so far you show me that you get errors for that-johnOn Jun=
 4, 2024, at 8:00=E2=80=AFAM, yang5891<EMAIL_ADDRESS>wrote:Thank yo=
u, teacher, but the number of cores in our group is 32, and I need to set m=
ore points and consider different ions and concentrations in the future. Ho=
w should I set these two parameters?---- Replied Message ----| From | John C<EMAIL_ADDRESS>||=
 Date | 6/4/2024 19:54 || To |<EMAIL_ADDRESS>|| Cc |<EMAIL_ADDRESS><EMAIL_ADDRESS>|| Subject | Re: [ORNL-Fusion/aorsa] Ho=
w to run properly on Centos server (Issue #49) |It affects the decomp=
osition of the matrix in the code. 2 x 2 is better than one by four. For th=
e test cases you should not need to change anything. They just use one by o=
ne.-johnOn Jun 4, 2024, at 7:52=E2=80=AFAM, yang5891<EMAIL_ADDRESS>wrote:=
Thank you, teacher, for your patience these days. My brother in my re=
search group helped me find the relevant parameters for calculating the num=
ber of cores (nprow x npcol =3D nproc).But is that okay as long as the prod=
uct of the two is equal to the number of cores needed for the calculation? =
For example, if I use quad-core computing, is there a difference between 2x=
2 and 1x4?---- Replied Message --=
--| From | John C<EMAIL_ADDRESS>|| Date | 6/4/2024 00:48 || To |<EMAIL_ADDRESS>|| Cc | ***<EMAIL_ADDRESS>gt; || Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Cento=
s server (Issue #49) |It seems like you are having issues runni=
ng with mpi. This error has to do with starting up and executing under mpi =
run, not with aorsa itself. I suggest you verify you can compile and run a =
simple mpi program. Assuming you are using intel compile, grab cpi.c from h=
ttps://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287mpiicc cpi.c -o cpimpirun -np 4 ./cpiother things,verify you are using the correct mpirun, 'which mpirun' should show mpiru=
n in the intel distributionTry making from scratch:make clean; =
makeAsk a college who is familiar with parallel programs on you=
r system for help. You issues seem to be outside of aorsa and have to do wi=
th basic compilation and execution of parallel programs.—=
Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: ***@***=
=2E***>—Reply to this email directly, view it on GitHu=
b, or unsubscribe.You are receiving this because you commented.Message ID: =
<EMAIL_ADDRESS>to this email directly, view =
it on GitHub, or unsubscribe.You are receiving this because you autho=
red the thread.Message ID<EMAIL_ADDRESS>to this =
email directly, view it on GitHub, or unsubscribe.You are receiving this be=
cause you commented.Message ID<EMAIL_ADDRESS>ly to this email directly, view it on GitHub, or unsubscribe.You are =
receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>—Reply to this email directly, view it on GitHub, or unsubscribe.You are rece=
iving this because you commented.Message ID: <ORNL-Fusi=
on/aorsa/issues/49/2147574133@github=
=2Ecom>

--
=
-john Principal Research Scientist John WrightOffice 617-253-96=
12zoom: https://mit.zoom.us/my/jcwright

--=_bdd64717b3167e2d2780a239b48ebf89--

Hi teacher, I'm having a small problem modifying the arithmetic example. I am now modifying it to a ratio of 1:1 for D and T and a concentration of 0.1% for the third impurity Li. However, I have calculated with TORIC that the absorption of Li can reach about 80%, but with AORSA the electron absorption is negative (-3.5018 %) and the absorption of Li is only 2.1831 %.
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 21:16 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
First you need to verify the test case works so far you show me that you get errors for that-johnOn Jun 4, 2024, at 8:00 AM, yang5891 @.***> wrote:
Thank you, teacher, but the number of cores in our group is 32, and I need to set more points and consider different ions and concentrations in the future. How should I set these two parameters?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 19:54 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It affects the decomposition of the matrix in the code. 2 x 2 is better than one by four. For the test cases you should not need to change anything. They just use one by one.-johnOn Jun 4, 2024, at 7:52 AM, yang5891 @.***> wrote:
Thank you, teacher, for your patience these days. My brother in my research group helped me find the relevant parameters for calculating the number of cores (nprow x npcol = nproc).But is that okay as long as the product of the two is equal to the number of cores needed for the calculation? For example, if I use quad-core computing, is there a difference between 2x2 and 1x4?
---- Replied Message ----
| From | John C. @.> |
| Date | 6/4/2024 00:48 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
It seems like you are having issues running with mpi. This error has to do with starting up and executing under mpi run, not with aorsa itself. I suggest you verify you can compile and run a simple mpi program. Assuming you are using intel compile, grab cpi.c from https://gist.github.com/jcwright77/a5e1d66886bc17b0f7936466739cc287
mpiicc cpi.c -o cpi
mpirun -np 4 ./cpi
other things,
verify you are using the correct mpirun, 'which mpirun' should show mpirun in the intel distribution
Try making from scratch:
make clean; make
Ask a college who is familiar with parallel programs on your system for help. You issues seem to be outside of aorsa and have to do with basic compilation and execution of parallel programs.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: @.***>

Teacher, the previous error in the read file was solved by using the old read interface.But now there are two kinds of errors after successfully reading the file:
error (1)forrtl: severe (64): input conversion error, unit 237, file /public/home/yzp/aorsa0/runc1/out237error
(2)Caught signal 11 (Segmentation fault: address not mapped to object at address 0xfea07d70)
==== backtrace (tid: 279637) ====
0 0x00000000005caecb fieldws_() ???:0
1 0x000000000065af2a MAIN__() ???:0
2 0x000000000040fde2 main() ???:0
3 0x0000000000022505 __libc_start_main() ???:0
4 0x000000000040fce9 _start() ???:0
forrtl: severe (174): SIGSEGV, segmentation fault occurred
This seems to have something to do with the nmodesx, nmodesx, nuper, and nupar settings. How should I set these parameters here?
---- Replied Message ----
| From | John C. @.> |
| Date | 5/31/2024 21:08 |
| To | @.> |
| Cc | @.>,
@.> |
| Subject | Re: [ORNL-Fusion/aorsa] How to run properly on Centos server (Issue #49) |
Message ID: @.***>


Removed eslint and prettier from the entire codebase

because i like stuff looking the way i want it to

ok this is annoying me, i made a pull request to my own repo and it appears here 💀


Consider creating a build pipeline

https://game.ci/ could be used for this.

For now, out of scope.


added {http,https,no} proxy support to docker engines

Adds HTTP_PROXY, HTTPS_PROXY and NO_PROXY support to docker engines per issue #1319

Hm, cool, thanks for the contribution.
I'm wondering if it might be better to have just one flag, which will then apply to any environment variable, instead of three (and possibly more in the future) different flags?
That way, you would :
$ docker-machine create -d provider --engine-env HTTP_PROXY=http://foo.com --engine-env HTTPS_PROXY=bar.com proxybox

What do you think?

@nathanleclaire I like it! I'll update the PR.

@nathanleclaire the PR now has code that implements the more general --engine-env flag

Very cool.  Any ideas how to test this in the integration suite?

@nathanleclaire I came up with a test that should work well -- spins up a machine and checks /proc/<docker daemon pid>/environs for the set Environment Variable. Let me know what you think.

:+1: for this -- i know a lot will benefit :)

Looking pretty good --- we are about to merge in some structural changes to our docs, I will need you to rebase after that and then we will be ready to rock.  I'll ping you when it's ready to rebase.

OK I've merged that docs PR -- please rebase when it is convenient for you.  Thanks!

@nathanleclaire I have rebased my doc changes into the new doc structure

cc @ehazlett for review of this PR

@nathanleclaire fixed up the mistake in the docs/reference/create.md you referenced - apologies for that oversight.

Thanks @udryan10 and no problem.
Hey @tianon, could you please take a quick look at these changes to the various OS configurations and note if anything strikes you as incorrect?  For instance, I'm not sure if we should do export VAR=blah in /var/lib/boot2docker/profile, the rest of environment variables set there are not exported.

It all looks reasonably sane, but what happens when I need quotes in my environment variable values?  ie: --engine-env SOME_VAR='some "value" ' (which will come through into Go as "SOME_VAR=some \"value\" ")

(ie, we probably ought to pass these through %q from fmt at the very least)

I've updated the code to run the env's through %q

LGTM

LGTM

It seems that some aspect of proxy variable parsing can be picky about the proxy URL schema. I was getting "Proxy Authentication" errors with a proxy that doesn't require credentials. Adding a trailing slash to my proxy variables fixed the issue, as in:
docker-machine create -d virtualbox \
    --engine-env HTTP_PROXY=http://example.com:8080/ \
    --engine-env HTTPS_PROXY=https://example.com:8080/ \
    default

This format is used in the Docker Engine example, but it's not used in the docker-machine create example.

@chadswen Could I get you to file a new issue about the documentation change required and cc @udryan10 and myself please?  Thanks!


Fix the workarounds for dependency problems of lifecycle-viewmodel(-ktx).

androidx.fragment:fragment-ktx:1.4.0 depends on androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1, and
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.4.0 depends on androidx.lifecycle:lifecycle-viewmodel:2.4.0.
But, lifecycle-viewmodel-ktx:2.3.1 and lifecycle-viewmodel:2.4.0 contain some classes with the same names, which leads to compilation errors.
Therefore, as a workaround, we explicitly added dependencies to androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0.

https://issuetracker.google.com/issues/219545060
The original issue has been fixed in AndroidX Lifecycle 2.5.0.


Radial gradients can't use negative coordinates

I'm creating an animation with PTS that uses a lot of gradients and noticed an odd behavior when gradients leave the canvas area. It appears that radial gradients can only use absolute coordinates. I've created an example here showing the issue (PTS-related code here) but I'm unsure if this is a bug or a misunderstanding on my part. Is there a better way to use negative coordinates with gradients?
https://user-images.githubusercontent.com/13274728/197338341-4e0baf35-3e3f-4e7a-9635-c9f42b5b1a3b.mov

I played around with it and may have found a way to use negative coordinates in the linked PR. Let me know if it needs adjustment!

Hi @doseofted - I'm sorry for the delay on this. Been very busy at work in the past month. Thank you so much for catching this bug and sending a PR too. Really appreciate it 🙏