Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Core Improvement #61

Open
1 of 3 tasks
Trinkle23897 opened this issue Feb 21, 2022 · 4 comments
Open
1 of 3 tasks

[Feature Request] Core Improvement #61

Trinkle23897 opened this issue Feb 21, 2022 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@Trinkle23897
Copy link
Collaborator

Trinkle23897 commented Feb 21, 2022

Road Map:

  1. Install and run envpool examples successfully;
  2. Setup bazel build environment successfully: refer to the online documentation or CI scripts under .github/;
  3. Read code, typically envpool/core/, make sure you understand the current system structure; in short:
  • array.h contains a C++-based numpy-style array, paired with spec.h; for data transfer
  • dict.h contains a C++-based dict; for declaring env attributes such as observation space and action space;
  • env_spec.h contains the common field of environment attributes;
  • env.h is the single env abstraction in envpool; other C++ env MUST inherits this class and overwrite Reset, Step, and IsDone;
  • state_buffer_queue.h and action_buffer_queue.h are (almost) lock-free queue implementation for AsyncEnvPool;
  • envpool.h is the base class for various of envpool implementation, e.g., PyEnvPool is the python binding of envpool, AsyncEnvPool is the C++ async env execution;
  • async_envpool.h contains the main logic of concurrent execution; the thread pool is inside its constructor.

Things to do:

However, the curve shows some strange things: suppose we use N CPU cores with
a single machine, when we set the number of thread (M) to M<N/2 , the performance
is linearly scaled; when M>=N/2 , the performance gain is limited.

For Win/Mac:

@peilinrao peilinrao assigned peilinrao and unassigned peilinrao Apr 6, 2022
@Trinkle23897 Trinkle23897 added the enhancement New feature or request label Apr 27, 2022
@alek5k
Copy link

alek5k commented May 13, 2022

Hi there, do you have an estimation for when Windows will be supported? Thanks

@Trinkle23897
Copy link
Collaborator Author

I'm curious about your usecase. Do you want to use it on windows or develop your own environment on windows?

@alek5k
Copy link

alek5k commented May 14, 2022

Hi there. My typical workflow is developing on Windows and running experiments on Linux computers. I work in a corporation and we are issued Windows computers, so a lot of our tooling for development is only on Windows machines. Some of our customers also run dedicated Windows servers, so if we wanted to deploy it would make it easier to just do it natively.

For the dev use case, it might be good enough to just be able to install it and run it, regardless of whether I enjoy the performance benefits or not.

Hope this helps. What are your plans with Windows support going into the future?

@Trinkle23897
Copy link
Collaborator Author

Hope this helps. What are your plans with Windows support going into the future?

Thanks for sharing this valuable information with us! For long-term planning, we are going to support windows/macos, but the priority is not higher than new environment integration. Also, some people working on this project (typically CMU master students) are going for their summer internship, so we probably won't have progress in this issue. However, if you are interested in making this thing work, I can offer my help and please do not hesitate to submit the pull request!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants