Repository: modin-project/modin

Issue:
Performance regression in `read_csv` on `omnisci` storage format
### System information
- **OS Platform and Distribution (e.g., Linux Ubuntu 16.04)**: Ubuntu
- **Modin version** (`modin.__version__`): 0.13.0
- **Python version**: 3.9.10
- **Code we can use to reproduce**:

```python
# For 0.13
import modin.pandas as pd
import modin.config as cfg
cfg.StorageFormat.put("omnisci")

# For 0.11
#import modin.experimental.pandas as pd
#import modin.config as cfg
#cfg.Backend.put("omnisci")


columns = [
        "vendor_id",
        "pickup_datetime",
        "dropoff_datetime",
        "passenger_count",
        "trip_distance",
        "pickup_longitude",
        "pickup_latitude",
        "rate_code",
        "store_and_fwd_flag",
        "dropoff_longitude",
        "dropoff_latitude",
        "payment_type",
        "fare_amount",
        "surcharge",
        "mta_tax",
        "tip_amount",
        "tolls_amount",
        "total_amount"]

t= time.time()
df = pd.read_csv("nyc_taxi_data.csv", parse_dates=["pickup_datetime", "dropoff_datetime"], names=columns, header=0)
print(f"Time: {time.time() - t} s")
```

Data is NY Taxi(https://s3-us-west-2.amazonaws.com/nyctlc/nyc_taxi_data.csv.gz). Decompressed csv is used.
<!--
You can obtain the Modin version with

python -c "import modin; print(modin.__version__)"
-->


### Describe the problem
<!-- Describe the problem clearly here. -->

Looks like `read_csv` function is very slow in Modin on Omnisci 0.13. Modin 0.11 completes the task much faster. `top` linux command gives info that only one thread is used in 0.13.

Times:

- 0.11 - 13.9 s
- 0.13 - 137.3 s




Discussion:
I've run reproducer with same omnisci on 0.11.0 and 0.13.0 and it looks, like modin 0.13 limits parallelism to one thread (mb with OMP_NUM_THREADS). @modin-project/modin-omnisci PTAL.
That was affected by #3670. We should correct OmniSci usage.
this sounds like a candidate for backporting to 0.13.1 :)
@fexolm, @prutskov, try checking the performance by explicitly setting both `StorageFormat` and `Engine`.

```python
import modin.config as cfg
cfg.StorageFormat.put("omnisci")
cfg.Engine.put("native")
# and also enable experimental feature
cfg.IsExperimental.put(True)
```
> @fexolm, @prutskov, try checking the performance by explicitly setting both `StorageFormat` and `Engine`.
> 
> ```python
> import modin.config as cfg
> cfg.StorageFormat.put("omnisci")
> cfg.Engine.put("native")
> # and also enable experimental feature
> cfg.IsExperimental.put(True)
> ```

Using this on 0.13 I can get time similar to 0.11! But shouldn't this be done automatically with just `cfg.StorageFormat.put("omnisci")`?
This should be done automatically, but for now doesn't work so.
I will open a PR to fix this.

Resolving patch:
diff --git a/modin/pandas/__init__.py b/modin/pandas/__init__.py
--- a/modin/pandas/__init__.py
+++ b/modin/pandas/__init__.py
@@ -114,13 +114,14 @@ def _update_engine(publisher: Parameter):
     ):
         publisher.put("Native")
         IsExperimental.put(True)
-    elif (
+    if (
         publisher.get() == "Native"
         and StorageFormat.get_value_source() == ValueSource.DEFAULT
     ):
         StorageFormat.put("Omnisci")
         IsExperimental.put(True)
-    elif publisher.get() == "Ray":
+
+    if publisher.get() == "Ray":
         if _is_first_update.get("Ray", True):
             from modin.core.execution.ray.common.utils import initialize_ray
 


Test patch: